Developers generally generate software by creating source code. Typically source code is text comprising programming language instructions for a computer. This source code may be interpreted or compiled and linked into a binary for execution. In some cases, such as SmallTalk, the source code may exist entirely in an integrated development environment (IDE) presented independently of files. Nonetheless, the IDE presents the source code as text.
As software has evolved, different programming language philosophies, such as structural programming, generic programming, and object oriented programming, allow for the development of more complex pieces of software from simpler pieces of software. For instance, functions may be created from other functions. Further still, objects may be composed from other objects. Concrete objects or methods may be created by populating templates. Objects may be created from methods and attributes.
In this way, contemporary programming languages provide for the creation of software entities, where the entities have relationships with each other. The addition of this structure has provided for the development of software of increasing complexity in a disciplined manner.
In fact, the structure of the software entities and their interrelationships are so critical to the understanding of the software that software architects presently use diagrams to illustrate the software structure without the code. Unified Modeling Language (UML) provides diagrams that among other things show relationships and invocations between objects. This language, however, does not provide relationships and invocations between pieces of the source code. For relational databases, entity relationship diagrams show the structure of relational tables without showing the underlying Structure Query Language (SQL). Indeed, the intent of UML and Entity Relationship Diagrams (ERDs) have been to abstract out the source code details.
As diagrams of software have gained acceptance, tools to develop diagrams have proliferated. UML is often edited with RATIONAL ROSE™ or other editors. Several ERD editors exist in the marketplace.
These diagram editors have been primarily focused in aiding developers in developing the diagrams themselves and then afterwards generating the source code. This is a result of the software development methodologies to focus on software structure prior to the actual writing of source code. Often the diagrams editors have the user edit diagrams and then use a source code generator component to generate source code to be edited afterwards.